<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
</head>

<body>
	<script>
		function mergeSort(array) {
			debugger
			if (array.length > 1) {
				const { length } = array
				const middle = Math.floor(length / 2)
				const left = mergeSort(array.slice(0, middle)) // 5,7
				const right = mergeSort(array.slice(middle, length))
				array = merge(left, right)
			}
			return array
		}

		function merge(left, right) {
			debugger
			let i = 0
			let j = 0
			const result = []
			while (i < left.length && j < right.length) {
				// 把数组里小的值先push进去,并且在这个索引加1, 再比较第一个数组里的值跟数组剩下的值的大小
				result.push(
					left[i] < right[j] ? left[i++] : right[j++]
				)
				console.log(result)
				// 先push, 再++
			}
			// 有一个数组循环完,那么另一个只有一个每循环了, 这边判断哪个的还没添加(最大的)
			return result.concat(i < left.length ? left.slice(i) : right.slice(j)) 
		}

		mergeSort([7, 5, 4, 6])
	</script>
</body>

</html>